package com.tedu.api.list;

import org.junit.Test;

import java.util.LinkedList;
import java.util.List;

/** 链表实现集合   包位置：java.util
 *  List接口集合--三个实现类：
 *  ArrayList   实现类：数组实现
 *               特点：查询快【按照下标】，增删慢【改动下标：元素】
 *  LinkedList  实现类：双向链表实现
 *              特点：查询慢【按照下标】，增删快【首，尾元素，中间元素】
 *  ArrayList与LinkedList大部分方法完全一致：
 *  添加add（） 获取get（）   删除remove（）
 *  size（） 获取集合总数  clear（）清空集合元素
 *
 *  不一致的方法：
 *  indexOf（） lastIndexOf
 *  addFirst（）
 *  addLast（）
 *  removeFirst（）
 *  removeLast（）
 */
public class LinkedListAPI {
   @Test
    public void testIndexOf(){
       //创建集合--双向链接集合
       List<String>list=new LinkedList<>();
       list.add("三吱");
       list.add("龙虎斗");
       list.add("螺蛳粉");
       list.add("庵汤");
      /** ArrayList与LinkedList通用方法
       * indexOf （）    返回值：int
       * 作用：返回指定元素在集合中第一次出现的索引位置
       *      【理解：返回元素的下标为】
       */
      int index=list.indexOf("庵汤");
      /** LinkedList独有方法
       *  LastIndexOf()  返回值：int
       *  作用：返回最后的元素在集合中出现的索引位置
       */
      int lastIndex=list.lastIndexOf("庵汤");
      System.out.println("返回最后元素下标："+lastIndex);
   }
   /** LinkedList独有方法
    * addFirst() 返回值：void
    * 作用：将指定元素添加至链表头部
    * addLast（）    返回值：void
    * 作用：将指定元素添加至链表尾部
    * addLast()
    * removeFirst（）
    * removeLast
    */
   @Test
   public void testAR(){
       //创建集合--双向链接集合
       List<String>list=new LinkedList<>();
       list.add("三吱");
       list.add("龙虎斗");
       list.add("螺蛳粉");
       list.add("庵汤");
       //LinkedList独有方法
       ((LinkedList)list).addFirst("榴莲");
       ((LinkedList)list).addLast("豆汁");
       System.out.println("双向链表："+list);
       ((LinkedList)list).removeFirst();
       System.out.println("双向链表："+list);
   }
}

































